#include <unistd.h>
#include <sys/wait.h>
#include <cstdio>
#include <cstdlib>

// int main()
// {
//     //execvp

//     printf("test execv begin ....\n");
//     char* args[] = {
//         (char*)"ls",
//         (char*)"-a",
//         (char*)"-l",
//         nullptr
//     };
//     char* env[] = {
//         (char*)"name=zzb",
//         (char*)"birthday=20000610",
//         nullptr
//     };
//     execvpe("TestPath", args, env);
//     perror("execvp");
//     return 0;
// }
// int main()
// {
//     //execvp

//     printf("test execv begin ....\n");
//     char* args[] = {
//         (char*)"ls",
//         (char*)"-a",
//         (char*)"-l",
//         nullptr
//     };
//     execvp("ls", args);
//     perror("execvp");
//     return 0;
//}
// int main()
// {
//     //execv
//     //v[vector] -- 参数是字符串指针数组 argv[]。
//     printf("test execv begin ....\n");
//     char* args[] = {
//         (char*)"ls",
//         (char*)"-a",
//         (char*)"-l",
//         nullptr
//     };
//     execv("/usr/bin/ls", args);
//     perror("execv");
//     return 0;
// }
// int main()
// {
//     //execle
//     //e[environment] -- 可以自定义环境变量 envp[]
//     printf("test execle begin ....\n");
//     char* envir[] = {
//         "name=zzb",
//         "birthday=20000610",
//         nullptr//必须以nullptr结尾
//     };
//     execle("/home/zzb/code/process/2.TestPath/TestPath", "./TestPath", nullptr, envir);
//     perror("execle");
//     return 0;
// }
// int main()
// {
//     //execlp 
//     //p[PATH] -- 可以使用文件名，系统会自动在 PATH 环境变量中搜索
//     printf("test execlp begin ....\n");
//     execlp("ls", "ls", "-a", "-l", nullptr);
//     perror("execlp");
//     return 0;
// }
// int main()
// {
//     //execl 
//     //l[list] -- 参数是可变参数列表，直接一个一个传
//     printf("test execl begin ....\n");
//     execl("/usr/bin/ls", "ls", "-a", "-l", nullptr);
//     perror("execl");
//     return 0;
// }
